perm filename APP6[AIM,DBL]2 blob sn#125910 filedate 1974-10-22 generic text, type T, neo UTF8
00100	.DEVICE XGP
00200	.FONT 1 "FIX25"
00300	.FONT 2 "SIGN57"
00400	.FONT 3 "SHD40"
00500	.FONT 4 "BDI25"
00600	.FONT 5 "NGB30"
00700	.FONT 6 "NGR20"
00800	.PAGE FRAME 53 HIGH 75 WIDE
00900	.TURN ON "↓_π{"
01000	.TURN ON "\" FOR "%"
01100	.MACRO B ⊂ BEGIN VERBATIM GROUP ⊃
01200	.MACRO E ⊂ APART END ⊃
01300	.TABBREAK
01400	.EVERY FOOTING(\6Fourth Draft .... {DATE},page A6.{IF PAGE = 1 THEN 1 ELSE PAGE},User/CF Dialogue excerpts\*)
01500	.EVERY HEADING(\3BEINGS\*,,\4Doug Lenat\*)
01600	.COUNT PAGE PRINTING "1"
01700	.NEXT PAGE
01800	
     

00100	\2APPENDIX 6. \* \3CF .... RUNNING\*
00200	.NOFILL
00300	
00400	
00500	
00600	
00700	\5<Here is the synthesized program itself, CF, running.>\*
00800	
00900	←\4ENTER(T)\*
01000	
01100	USER INTERRUPT LEVEL... \40\*
01200	
01300	
01400	\5PUP:\* (PUP IS ABOUT TO WORK ON CONCEPT FORMATION)
01500	
01600	
01700	\5PUP:\* (THE TYPE OF CONCEPT FORMATION PUP IS ABOUT TO WORK ON IS
01800	CLASSIFICATORY:CONCEPT:FORMATION)
01900	
02000	(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
02100	
02200	\4(ARCH (A B C) (S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))\*
02300	
02400		ARCH
02500		OBJECTS (A B C)
02600		MAY HAVE ((S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))
02700	
02800	(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
02900	
03000	\4(TOWER (A B C D) (S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))\*
03100	
03200		ARCH
03300		OBJECTS (A B C)
03400		MAY HAVE ((S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))
03500	
03600		TOWER
03700		OBJECTS (A B C D)
03800		MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
03900	
04000	(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
04100	
04200	\4(??? (A B C) (S A B) (S C B))\*
04300	
04400	(COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS IS
04500	     ARCH))
04600	
04700	PLEASE GIVE ME NAME:OF:CLASS
04800	
04900	\4ARCH\*
05000	
05100		ARCH
05200		OBJECTS (A B C)
05300		MAY HAVE ((S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))
05400	
05500		TOWER
05600		OBJECTS (A B C D)
05700		MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
05800	
05900	(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
06000	
06100	\4(??? (A B C) (S A B) (S C B) (BLOCK A) (BLOCK C) (TOUCH A C) (BLOCK B))\*
06200	
06300	(COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS IS
06400	     ARCH))
06500	
06600	PLEASE GIVE ME NAME:OF:CLASS
06700	
06800	\4NOTHING\*
06900	
07000		ARCH
07100		OBJECTS (A B C)
07200		MUSNT HAVE ((TOUCH A C))
07300		MAY HAVE ((S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))
07400	
07500		TOWER
07600		OBJECTS (A B C D)
07700		MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
07800	
07900	(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
08000	
08100	\4(??? (A B C) (BLOCK A) (BLOCK B) (BLOCK C))\*
08200	
08300	(COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS IS
08400	     ARCH))
08500	
08600	PLEASE GIVE ME NAME:OF:CLASS
08700	
08800	\4NOTHING\*
08900	
09000		ARCH
09100		OBJECTS (A B C)
09200		MUST HAVE ((S A B))
09300		MUSNT HAVE ((TOUCH A C))
09400		MAY HAVE ((S C B) (BLOCK A) (BLOCK B) (BLOCK C))
09500	
09600		TOWER
09700		OBJECTS (A B C D)
09800		MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
09900	
10000	(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
10100	
10200	\4(??? (A B C) (BLOCK A) (BLOCK C) (S A B) (BLOCK B))\*
10300	
10400	(COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS IS
10500	     ARCH))
10600	
10700	PLEASE GIVE ME NAME:OF:CLASS
10800	
10900	\4NOTHING\*
11000	
11100		ARCH
11200		OBJECTS (A B C)
11300		MUST HAVE ((S A B) (S C B))
11400		MUSNT HAVE ((TOUCH A C))
11500		MAY HAVE ((BLOCK A) (BLOCK B) (BLOCK C))
11600	
11700		TOWER
11800		OBJECTS (A B C D)
11900		MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
12000	
12100	\5<notice that at this point, the model for ARCH is the usual one>\*
12200	
12300	
12400	(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
12500	
12600	\4(??? (A B C) (TOUCH A C) (TOUCH B C) (BLOCK A) (RED B))\*
12700	
12800	(COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS IS
12900	     TOWER))
13000	
13100	PLEASE GIVE ME NAME:OF:CLASS
13200	
13300	\4ROW\*
13400	
13500		ARCH
13600		OBJECTS (A B C)
13700		MUST HAVE ((S A B) (S C B))
13800		MUSNT HAVE ((TOUCH A C))
13900		MAY HAVE ((BLOCK A) (BLOCK B) (BLOCK C))
14000	
14100		TOWER
14200		OBJECTS (A B C D)
14300		MUST HAVE ((S A B))
14400		MAY HAVE ((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
14500	
14600		ROW
14700		OBJECTS (A B C)
14800		MAY HAVE ((TOUCH A C) (TOUCH B C) (BLOCK A) (RED B))
14900	
15000	(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
15100	
15200	\4(ARCH (A B C D) (S A B) (TOUCH A C))\*
15300	
15400		ARCH
15500		OBJECTS (A B C (D))
15600		MUST HAVE ((S A B))
15700		MAY HAVE ((BLOCK A) (BLOCK B) (BLOCK C) (TOUCH A C) (S C B))
15800	
15900	\5<notice how contradictory user input is handled: features are simply
16000	    transferred from the MUST/MUSTNOT sets to the MAY set>\*
16100	
16200		TOWER
16300		OBJECTS (A B C D)
16400		MUST HAVE ((S A B))
16500		MAY HAVE ((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
16600	
16700		ROW
16800		OBJECTS (A B C)
16900		MAY HAVE ((TOUCH A C) (TOUCH B C) (BLOCK A) (RED B))
17000	
17100	
17200	(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
17300	
17400	\4(HALT)\*
17500	
17600	\5PUP:\* (PUP HAS THOUGHT ABOUT THE CLASSIFICATORY:CONCEPT:FORMATION TYPE OF
17700	     CONCEPT:FORMATION)
17800	
17900	
18000	
18100	
18200	FINISHED CURRENT SERVICE; WHAT SHOULD I DO? TYPE ONE OF:
18300	
18400	1   EXIT FROM SYSTEM
18500	2   CONTINUE SERVING, AS BEFORE
18600	3   CONTINUE SERVING, BUT GET A NEW USER INTERRUPT LEVEL
18700	4   REINITIALIZE SYSTEM AND START FROM BEGINNING AGAIN
18800	
18900	OK, GO .......... \43\*
19000	
19100	USER INTERRUPT LEVEL... \410\*
19200	
19300	\5The user has switched to a mode where he can interrupt after each BEING
19400			gets control, and ask it questions.\*
19500	
19600	INTERRUPT? \4YES
19700	
19800	\*REQUEST: \4CH
19900	\*NIL *** SATISFY *** (CF:1)   \5<the control history stack. note that the
20000						top element is CF:1, not SERVE.>\*
20100	
20200	REQUEST: \4WHAT
20300	\*(SATISFY THE SIMPLE SUBGOAL (AWARE USER (PUP IS ABOUT TO WORK ON 
20400	    						CONCEPT FORMATION)))
20500	REQUEST: \4HOW
20600	\*(PASS CONTROL TO THE SIMPLEST SUFFICIENT BEING)
20700	
20800	REQUEST: \4WHY
20900	\*((AWARE USER (PUP IS ABOUT TO WORK ON CONCEPT FORMATION)) IS A REQUISITE
21000	      	 TO BE SATISFIED)
21100	
21200	REQUEST: \4OLDER
21300	\*CF:1
21400	
21500	REQUEST: \4WHAT
21600	\*(A SPECIALIZED BEING WHICH DOES (LEARN HOW TO IMPOSE A CONCEPT 
21700			STRUCTURING UPON A DOMAIN; LEARN HOW TO CHARACTERIZE,
21800			OR AT LEAST DISTINGUISH, VARIOUS CONCEPTS))
21900	
22000	REQUEST: \4WHY
22100	\*(CONCEPT:LEARNING IS NECESSARY TO CONCEPT KNOWLEDGE AND CONCEPT:FORMATION
22200	        	IS TOO GENERAL TO USE AS IT IS)
22300	
22400	REQUEST: \4QUIT
22500	
22600	\*INTERRUPT? \4NO
22700	\*INTERRUPT? \4YES
22800	
22900	\*REQUEST: \4BEING
23000	\*PAD:2
23100	
23200	REQUEST: \4WHAT
23300	\*(A SPECIALIZED BEING WHICH DOES (DIVIDE A DOMAIN INTO SUBDOMAINS; 
23400			USUALLY THESE WILL BE DISJOINT, AND THEIR UNION
23500			WILL BE THE ENTIRE DOMAIN))
23600	
23700	REQUEST: \4WHY
23800	\*(BECAUSE PUP MUST ENCODE A FUNCTION WHICH PARTITIONS A DOMAIN INTO 
23900	   		CLASSES, AND PARTITION:A:DOMAIN IS TOO GENERAL
24000			TO USE AS IT IS)
24100	
24200	REQUEST: \4HOW
24300	\*(BY BUILDING UP THE PARTITION GRADUALLY, BY ADDING TO OUR KNOWLEDGE OF
24400			THE PARTITION ONE PAIR AT A TIME; HERE A
24500			PAIR IS <ELEMENT, CLASS:NAME>)
24600	
24700	REQUEST: \4QUIT
24800	
24900	\*INTERRUPT? \4YES
25000	
25100	\*REQUEST: \4CH
25200	\*NIL *** TAKE:HOLD:OF:3 *** (PAD:2 CF:1)
25300	
25400	REQUEST: \4WHY
25500	\*(PUP WANTS ELEMENT:4 ,AND WE DON'T HAVE TO DO ANY COMPUTING TO GET IT 
25600			AND TAKE:HOLD:OF IS TOO GENERAL TO USE AS
25700			IT IS)
25800	
25900	REQUEST: \4HOW
26000	\*(LOOK AROUND A LITTLE; IF IT ISNT FOUND TRIVIALLY, THEN ASK THE USER 
26100			TO GIVE ELEMENT:4 TO US)
26200	
26300	REQUEST: \4AFFECTS
26400	\*((IN POSSIBLE CALLED)
26500	 (ELEMENT:4 POSSIBLE CALLED)
26600	 (ELEMENT:4 POSSIBLE CALLED)
26700	 (ELEMENT:OBJECTS:11 POSSIBLE CALLED)
26800	 (ELEMENT:CLASSNAME:13 POSSIBLE CALLED)
26900	 (ELEMENT:RELNS:15 POSSIBLE CALLED))
27000	
27100	REQUEST: \4QUIT
27200	
27300	
27400	\*(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
27500	
27600	\4(??? (A B) (BLOCK A]\*
27700	
27800	INTERRUPT? \4NO
27900	\*INTERRUPT? \4YES
28000	
28100	\*REQUEST: \4CH
28200	\*NIL *** SOME:PART:OF:14 *** (TAKE:HOLD:OF:3 PAD:2 CF:1)
28300	
28400	REQUEST: \4WHAT
28500	\*(A SPECIALIZED BEING WHICH DOES (THIS IS A DESTRUCTIVE FUNCTION; IT 
28600			BREAKS A PIECE OFF OF (??? (A B) (BLOCK A))))
28700	
28800	REQUEST: \4HOW
28900	\*(USE SOME PRE:EXISTING TECHNIQUE TO GET THE SIMPLE LISP PROGRAM (MADE 
29000			UP OF CARS AND CDRS) WHICH DOES THE JOB. SUCH
29100			FACILITIES MIGHT BE PW1, PUP, DAVID SHAW'S PGM, 
29200			OR EVEN TRIAL AND ERROR.)
29300	
29400	REQUEST: \4WHY
29500	\*(ONLY PART OF (??? (A B) (BLOCK A)) IS DESIRED AT THIS POINT, AND
29600			SOME:PART:OF IS TOO GENERAL TO USE AS IT IS)
29700	
29800	REQUEST: \4META:CODE
29900	\*(PROGN (COMMENT IN ALL CALLS TO DATE, ARG1 IS INSTANTIATED AS (COMMENT
30000								       EVAL ARG1)) 
30100	       (CAR ARG1))
30200	
30300	REQUEST: \4QUIT
30400	
30500	\*INTERRUPT? \4NO
30600	\*INTERRUPT? \4NO
30700	\*INTERRUPT? \4NO
30800	\*INTERRUPT? \4YES
30900	
31000	\*REQUEST: \4CH
31100	\*NIL *** FOREACH:17 *** (GET:HOLD:OF:8 PAD:2 CF:1)
31200	
31300	REQUEST: \4WHAT
31400	\*(A SPECIALIZED BEING WHICH DOES (GO THROUGH THE KNOWN SPACE OF POSSIBLE
31500			NAMES:OF:CLASS ,WHICH IS 
31600			SET:OF:POSSIBLE:NAMES:OF:CLASS ,AND PERFORM 
31700			(TEST:18 POSSIBLE:NAME:OF:CLASS
31800	       		         (COMMENT FOR SATISFACTION OF GOAL CRITERIA))
31900			ON EACH, UNTIL SOME SPECIFIED TERMINATION 
32000			CONDITION IS REACHED))
32100	
32200	REQUEST: \4QUIT
32300	
32400	\*INTERRUPT? \4YES
32500	
32600	\*REQUEST: \4BEING
32700	\*TEST:18
32800	
32900	REQUEST: \4WHAT
33000	\*(A SPECIALIZED BEING WHICH DOES (TEST TO SEE IF THE ARG1 ARCH MEETS 
33100			THE DESIRED CONDITIONS (COMMENT FOR SATISFACTION
33200			OF GOAL CRITERIA)))
33300	
33400	REQUEST: \4QUIT
33500	
33600	\*INTERRUPT? \4NO
33700	\*INTERRUPT? \4NO
33800	\*INTERRUPT? \4NO
33900	\*INTERRUPT? \4YES
34000	
34100	\*REQUEST: \4CH
34200	\*NIL *** COMPARE:26 *** (COMPARE:19 TEST:18 FOREACH:17 GET:HOLD:OF:8 
34300					PAD:2 CF:1)
34400	
34500	REQUEST: \4WHAT
34600	\*(A SPECIALIZED BEING WHICH DOES (COMPARE ((S A B) (BLOCK A) (BLOCK B) 
34700						    (BLOCK C) (TOUCH A C) (S C B)) 
34800			WITH 
34900				((BLOCK A))))
35000	
35100	REQUEST: \4WHY
35200	\*(PUP WANTS TO SEE IF ((S A B) (BLOCK A) (BLOCK B) (BLOCK C) (TOUCH A C)
35300			S C B)) IS CLOSE ENOUGH TO ((BLOCK A))
35400			ND COMPARE IS TOO GENERAL TO USE AS IT IS)
35500	
35600	REQUEST: \4QUIT
35700	
35800	\*INTERRUPT? \4YES
35900	
36000	\*REQUEST: \4CH
36100	\*NIL *** CONTRADICTS:27 *** (COMPARE:26 COMPARE:19 TEST:18 FOREACH:17 
36200					GET:HOLD:OF:8 PAD:2 CF:1)
36300	
36400	REQUEST: \4WHAT
36500	\*(A SPECIALIZED BEING WHICH DOES (SEE IF (S A B) IS IN CONTRADICTION TO
36600			THE COLLECTION ((BLOCK A))))
36700	
36800	REQUEST: \4HOW
36900	\*(SEE HOW A (S A B) TYPE OF ARG1 CAN BE CONTRADICTORY, THEN EXAMINE THE
37000			RELATIONSHIP BETWEEN (S A B) AND ((BLOCK A)))
37100	
37200	REQUEST: \4QUIT
37300	
37400	\*INTERRUPT? \4YES
37500	
37600	\*REQUEST: \4CH
37700	\*NIL *** JOIN:23 *** (COMPARE:19 TEST:18 FOREACH:17 GET:HOLD:OF:8 PAD:2
37800				     CF:1)
37900	
38000	REQUEST: \4QUIT
38100	
38200	\*INTERRUPT? \4YES
38300	
38400	\*REQUEST: \4CH
38500	\*NIL *** TEST:18 *** (FOREACH:17 GET:HOLD:OF:8 PAD:2 CF:1)
38600	
38700	REQUEST: \4QUIT
38800	
38900	\*INTERRUPT? \4NO
39000	\*INTERRUPT? \4NO
39100	\*INTERRUPT? \4NO
39200	\*INTERRUPT? \4NO
39300	\*INTERRUPT? \4YES
39400	
39500	\*REQUEST: \4CH
39600	\*NIL *** CONTRADICTS:27 *** (COMPARE:26 COMPARE:19 TEST:18 FOREACH:17 
39700					GET:HOLD:OF:8 PAD:2 CF:1)
39800	
39900	REQUEST: \4META:CODE
40000	\*(PROGN 
40100	   (COMMENT IN ALL CALLS TO DATE, ARG1 IS INSTANTIATED AS RELATION)
40200	   (COMMENT IN ALL CALLS TO DATE, ARG2 IS 
40300				          INSTANTIATED AS ELEMENT:RELNS:15) 
40400	   (COND ((MEMBER ARG1 YES:RELNS:28)
40500	          (COMMENT ARG1 OCCURS WITH PROBABILITY 1, SO IT HAD
40600	                     BETTER BE IN ARG2, THE RELEVANT PIECE OF THE WORLD)
40700	          (NOT (MEMBER ARG1 ARG2)))
40800	         ((MEMBER ARG1 NO:RELNS:29)
40900	          (COMMENT SINCE ARG1 SHOULD NEVER OCCUR, WE HAVE A 
41000	                     CONTRADICTION IFF IT IS A MEMBER OF ARG2)         
41100	          (MEMBER ARG1 ARG2))
41200	         (T (COMMENT WE MAY OR MAY NOT HAVE ARG1 IN ARG2;  EITHER
41300				CASE IS ALLOWABLE; SO WE NEVER HAVE A
41400	                        CONTRADICTION) 
41500	           NIL)))
41600	
41700	
41800	REQUEST: \4QUIT
41900	
42000	\*INTERRUPT? \4NO
42100	\*INTERRUPT? \4YES
42200	
42300	\*REQUEST: \4CH
42400	\*NIL *** TEST:18 *** (FOREACH:17 GET:HOLD:OF:8 PAD:2 CF:1)
42500	
42600	REQUEST: \4WHAT
42700	\*(A SPECIALIZED BEING WHICH DOES (TEST TO SEE IF THE ARG1 ROW MEETS THE
42800			DESIRED CONDITIONS (COMMENT FOR SATISFACTION
42900			OF GOAL CRITERIA)))
43000	
43100	REQUEST: \4QUIT
43200	
43300	\*INTERRUPT? \4NO
43400	\*INTERRUPT? \4NO
43500	\*INTERRUPT? \4NO
43600	\*INTERRUPT? \4NO
43700	\*INTERRUPT? \4NO
43800	\*INTERRUPT? \4YES
43900	
44000	\*REQUEST: \4CH
44100	\*NIL *** CONTRADICTS:27 *** (COMPARE:26 COMPARE:19 TEST:18 FOREACH:17 
44200					GET:HOLD:OF:8 PAD:2 CF:1)
44300	
44400	REQUEST: \4QUIT
44500	
44600	\*INTERRUPT? \4YES
44700	
44800	\*REQUEST: \4CH
44900	\*NIL *** CONTRADICTS:27 *** (COMPARE:26 COMPARE:19 TEST:18 FOREACH:17 
45000					GET:HOLD:OF:8 PAD:2 CF:1)
45100	
45200	REQUEST: \4WHAT
45300	\*(A SPECIALIZED BEING WHICH DOES (SEE IF (BLOCK A) IS IN CONTRADICTION 
45400			TO THE COLLECTION ((BLOCK A))))
45500	
45600	REQUEST: \4QUIT
45700	
45800	\*INTERRUPT? \4YES
45900	
46000	\*REQUEST: \4CH
46100	\*NIL *** CONTRADICTS:27 *** (COMPARE:26 COMPARE:19 TEST:18 FOREACH:17 
46200					GET:HOLD:OF:8 PAD:2 CF:1)
46300	
46400	REQUEST: \4WHAT
46500	\*(A SPECIALIZED BEING WHICH DOES (SEE IF (RED B) IS IN CONTRADICTION TO
46600			THE COLLECTION ((BLOCK A))))
46700	
46800	REQUEST: \4QUIT
46900	
47000	\*INTERRUPT? \4NO
47100	
47200	
47300	\*(COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS 
47400			IS ROW))
47500	
47600	INTERRUPT? \4YES
47700	
47800	\*REQUEST: \4CH
47900	\*NIL *** ASK:USER:ABOUT:60 *** (FOREACH:17 GET:HOLD:OF:8 PAD:2 CF:1)
48000	
48100	REQUEST: \4WHAT
48200	\*(A SPECIALIZED BEING WHICH DOES (ASK THE USER TO RESOLVE DECISION
48300			INVOLVING NAME:OF:CLASS))
48400	
48500	REQUEST: \4WHY
48600	\*(BECAUSE PUP CANNOT RESOLVE IT, BUT MUST AT THIS TIME AND ASK:USER:ABOUT
48700			IS TOO GENERAL TO USE AS IT IS)
48800	
48900	REQUEST: \4HOW
49000	\*(ASK THE USER WHAT THE RESOLUTION IS)
49100	
49200	REQUEST: \4META:CODE
49300	\*(PROGN (COMMENT IN ALL CALLS TO DATE, ARG1 IS INSTANTIATED AS (COMMENT
49400								  NAME:OF:CLASS)) 
49500	       (PRIN1 
49600		     "
49700		      PLEASE GIVE ME ") 
49800	       (PRINT ARG1) 
49900	       (SET ARG1 (READ)))
50000	
50100	
50200	REQUEST: \4QUIT
50300	\*
50400	
50500	
50600	PLEASE GIVE ME NAME:OF:CLASS
50700	
50800	\4NOTHING\*
50900	
51000	INTERRUPT? \4YES
51100	
51200	\*REQUEST: \4CH
51300	\*NIL *** MODIFY:STRUCTURE:9 *** (PAD:2 CF:1)
51400	
51500	REQUEST: \4WHAT
51600	\*(A SPECIALIZED BEING WHICH DOES (MODIFY THE STRUCTURE CONTAINING 
51700						"NOTHING" AS AN ELEMENT))
51800	
51900	REQUEST: \4QUIT
52000	
52100	\*INTERRUPT? \4YES
52200	
52300	\*REQUEST: \4BEING
52400	\*CONDITIONAL:INSERTION:44
52500	
52600	REQUEST: \4QUIT
52700	
52800	\*INTERRUPT? \4NO
52900	\*INTERRUPT? \4NO
53000	\*INTERRUPT? \4YES
53100	
53200	\*REQUEST: \4CH
53300	\*NIL *** COMPLEX:ALTERATION:46 *** (COMPLEX:ALTERATION:45
53400				             MODIFY:STRUCTURE:9 PAD:2 CF:1)
53500	
53600	REQUEST: \4WHAT
53700	\*(A SPECIALIZED BEING WHICH DOES (ALTER ROW AND/OR ANOTHER ELEMENT OF 
53800						THE SAME OUTER LIST))
53900	
54000	REQUEST: \4WHY
54100	\*(BECAUSE MODIFYING THE STRUCTURE OF AN INDIVIDUAL ELEMENT IS EQUIVALENT
54200			TO UPDATING OUR DESCRIPTION OF A SINGLE
54300			PARTICULAR CONCEPT, AND THIS IS FUNDAMENTAL
54400			TO A DECENT CONCEPT FORMATION
54500			PROGRAM, AND COMPLEX:ALTERATION IS TOO GENERAL
54600			TO USE AS IT IS)
54700	
54800	REQUEST: \4HOW
54900	\*(BY MODIFYING THE STRUCTURE OF SUCH AN ELEMENT)
55000	
55100	REQUEST: \4OLDER
55200	\*COMPLEX:ALTERATION:45
55300	
55400	REQUEST: \4CH
55500	\*(COMPLEX:ALTERATION:46) *** COMPLEX:ALTERATION:45 *** (MODIFY:STRUCTURE:9
55600								  PAD:2 CF:1)
55700	
55800	REQUEST: \4QUIT
55900	
56000	\*INTERRUPT? \4NO
56100	\*INTERRUPT? \4NO
56200	\*INTERRUPT? \4NO
56300	\*INTERRUPT? \4YES
56400	
56500	\*REQUEST: \4CH
56600	\*NIL *** IS:OF:TYPE:61 *** (PAD:2 CF:1)
56700	
56800	REQUEST: \4WHAT
56900	\*(A SPECIALIZED BEING WHICH DOES (SEE IF ARG IS OF THE TYPE SPECIFIED. 
57000			THE PARTICULAR TYPE IS DELINEATED BY THE SPECIAL
57100			KNOWLEDGE:  (COMMENT BREAKAWAY)))
57200	
57300	REQUEST: \4META:CODE
57400	\*(EQUAL NAME:OF:CLASS HALT)
57500	
57600	REQUEST: \4QUIT
57700	
57800	\*INTERRUPT? \4YES
57900	
58000	\*REQUEST: \4CH
58100	\*NIL *** FOREACH *** (PAD:2 CF:1)
58200	
58300	REQUEST: \4WHAT
58400	\*(GO THROUGH THE KNOWN SPACE OF NAMES,
58500			WHICH IS SET:OF:POSSIBLE:NAMES:OF:CLASS,
58600	                AND PERFORM 
58700			(PROGN (PRINT NAME)
58800	   		       (COND ((GETP NAME CLASS:OBJECTS:33) 
58900				      (PRIN1 "OBJECTS ") 
59000				      (PRINT (GETP NAME
59100				                   CLASS:OBJECTS:33))))
59200	 		       (COND ((GETP NAME CLASS:YES:RELNS:35)
59300				      (PRIN1 "MUST HAVE ") 
59400	  			      (PRINT (GETP NAME 
59500					           CLASS:YES:RELNS:35)))) 
59600			       (COND ((GETP NAME CLASS:NO:RELNS:36)
59700				      (PRIN1 "MUSNT HAVE ") 
59800				      (PRINT (GETP NAME 
59900					           CLASS:NO:RELNS:36))))
60000			       (COND ((GETP NAME CLASS:MAYBE:RENS:37)
60100				      (PRIN1 "MAY HAVE ") 
60200				      (PRINT (GETP NAME 
60300					           CLASS:MAYBE:RELNS:37)))) 
60400			       (TERPRI) 
60500			       T) 
60600			ON EACH, UNTIL
60700			SOME SPECIFIED TERMINATION CONDITION IS REACHED)
60800	
60900	
61000	REQUEST: \4QUIT
61100	\*
61200	
61300		ARCH
61400		OBJECTS (A B C (D))
61500		MUST HAVE ((S A B))
61600		MAY HAVE ((BLOCK A) (BLOCK B) (BLOCK C) (TOUCH A C) (S C B))
61700	
61800		TOWER
61900		OBJECTS (A B C D)
62000		MUST HAVE ((S A B))
62100		MAY HAVE ((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
62200	
62300		ROW
62400		OBJECTS (A B C)
62500		MUST HAVE ((TOUCH A C))
62600		MAY HAVE ((TOUCH B C) (BLOCK A) (RED B))
62700	
62800	
62900	INTERRUPT? \4YES
63000	
63100	\*REQUEST: \4SET:OF:POSSIBLE:NAMES:OF:CLASS
63200	\*(ARCH TOWER ROW)
63300	
63400	REQUEST: \4CH
63500	\*NIL *** TAKE:HOLD:OF:3 *** (PAD:2 CF:1)
63600	
63700	REQUEST: \4WHAT
63800	\*(A SPECIALIZED BEING WHICH DOES (TAKE THE ARG1 ELEMENT:4 IN A TRIVIAL 
63900			WAY; EITHER BY ACCESSING IT OR BY READING
64000			IT IN))
64100	
64200	REQUEST: \4QUIT
64300	
64400	
64500	\*(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
64600	
64700	\4(??? (A B C) (BLOCK A) (BLOCK B]\*
64800	
64900	
65000	INTERRUPT? \4YES
65100	
65200	\*REQUEST: \4ELEMENT:4
65300	\*(??? (A B C) (BLOCK A) (BLOCK B))
65400	
65500	REQUEST: \4CH
65600	\*NIL *** SOME:PART:OF:12 *** (TAKE:HOLD:OF:3 PAD:2 CF:1)
65700	
65800	REQUEST: \4QUIT
65900	
66000	\*INTERRUPT? \4NO
66100	\*INTERRUPT? \4NO
66200	 .
66300	 .
66400	 .
66500	\*INTERRUPT? \4NO
66600	\*INTERRUPT? \4NO
66700	\*INTERRUPT? \4NO
66800	\*
66900	
67000	
67100	(COMMENT I MUST TELL YOU (COMMENT I GIVE UP))
67200	
67300	 .
67400	 .
67500	 .
67600	
67700	REQUEST: \4CH
67800	\*NIL *** SIMPLE:COMPARE:FN:43 *** (BETTER:38 CONDITIONAL:INSERTION:55 
67900					MODIFY:STRUCTURE:42 COMPLEX:ALTERATION:45 
68000					MODIFY:STRUCTURE:9 PAD:2 CF:1)
68100	
68200	REQUEST: \4WHAT
68300	\*(A SPECIALIZED BEING WHICH DOES (QUASI-COMPARISON WHICH ALWAYS RETURNS
68400	     A CONSTANT VALUE))
68500	
68600	REQUEST: \4WHY
68700	\*(BECAUSE ORDERING ISNT VERY IMPORTANT HERE, AND SIMPLE:COMPARE:FN IS 
68800			TOO GENERAL TO USE AS IT IS)
68900	
69000	REQUEST: \4QUIT
69100	
69200	\*INTERRUPT? \4YYES
69300	\*
69400	WRONG;  TYPE  YES   OR    NO   ......... INTERRUPT? \4YES
69500	
69600	\*REQUEST: \4CH
69700	\*NIL *** BETTER:38 *** (CONDITIONAL:INSERTION:55 MODIFY:STRUCTURE:42 
69800				COMPLEX:ALTERATION:45 MODIFY:STRUCTURE:9 PAD:2
69900				CF:1)
70000	
70100	REQUEST: \4EXPLICIT:ARGS
70200	\*(B1 B2)
70300	
70400	REQUEST: \4B1
70500	\*(S A B)
70600	
70700	REQUEST: \4B2
70800	\*(S C D)
70900	
71000	REQUEST: \4OLDER
71100	\*CONDITIONAL:INSERTION:55
71200	
71300	REQUEST: \4CH
71400	\*(BETTER:38) *** CONDITIONAL:INSERTION:55 *** (MODIFY:STRUCTURE:42 
71500				COMPLEX:ALTERATION:45 MODIFY:STRUCTURE:9 PAD:2
71600				CF:1)
71700	
71800	REQUEST: \4WHAT
71900	\*(A SPECIALIZED BEING WHICH DOES (PERHAPS WE WILL STICK IN A CONDITIONAL
72000			INSERTION STATEMENT, STICKING IN AN 
72100			((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C)) -TYPE
72200			ELEMENT INTO ITS PARENT
72300	                STRUCTURE))
72400	
72500	REQUEST: \4META:CODE
72600	\*(PROGN 
72700	   (SETQ RESULT:7 (LIST:JOIN RESULT:5 RESULT:6 
72800	                            (SETDIFFERENCE ELEMENT:RELNS:15
72900	                                     (APPEND (GETP NAME:OF:CLASS 
73000	                                                   CLASS:YES:RELNS:35) 
73100	                                             (GETP NAME:OF:CLASS 
73200							   CLASS:NO:RELNS:36) 
73300						     (GETP NAME:OF:CLASS
73400	           					   CLASS:MAYBE:RELNS:37))
73500		))) 
73600	   NIL 
73700	   (COND
73800	     (RESULT:7 
73900	      (PUT NAME:OF:CLASS
74000		   CLASS:MAYBE:RELNS:37 
74100		   (MERGE:IN RESULT:7 
74200			     (GETP NAME:OF:CLASS
74300				   CLASS:MAYBE:RELNS:37)
74400			     BETTER:38)))
74500	     (T (SETQ RESULT:7 NIL))))
74600	
74700	
74800	REQUEST: \4RESULT:7
74900	\*((S A B))
75000	
75100	REQUEST: \4RESULT:6
75200	\*NIL
75300	
75400	REQUEST: \4RESULT:5
75500	\*((S A B))
75600	
75700	REQUEST: \4(GETP NAME:OF:CLASS CLASS:MAYBE:RELNS:37]
75800	\*((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
75900	
76000	REQUEST: \4QUIT
76100	 .
76200	 .
76300	 .
76400	\*(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
76500	
76600	\4(HALT)\*
76700	
76800	
76900	
77000	FINISHED CURRENT SERVICE; WHAT SHOULD I DO? TYPE ONE OF:
77100	
77200	1   EXIT FROM SYSTEM
77300	2   CONTINUE SERVING, AS BEFORE
77400	3   CONTINUE SERVING, BUT GET A NEW USER INTERRUPT LEVEL
77500	4   REINITIALIZE SYSTEM AND START FROM BEGINNING AGAIN
77600	
77700	OK, GO .......... \41\*
77800	
77900	"EXITING SYSTEM"
78000	
78100	\5<end of session with the synthesized program>\*
78200	
78300	←\4SET:OF:POSSIBLE:NAMES:OF:CLASS\*
78400	(ARCH TOWER ROW HALT)
78500	
78600	←\4CDR(ARCH)\*
78700	(CLASS:OBJECTS:33   (A B C (D))    
78800	 CLASS:CLASSNAME:34 ARCH
78900	 CLASS:YES:RELNS:35 ((S A B))    
79000	 CLASS:NO:RELNS:36  NIL 
79100	 CLASS:MAYBE:RELNS:37 ((BLOCK A) (BLOCK B) (BLOCK C) (TOUCH A C) (S C B)))